import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import uba.fi.tda.tp3.Ecentricidad;
import uba.fi.tda.tp3.Grafo;
import uba.fi.tda.tp3.Resultado;


public class Tdatp3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("Monti Javier, 79077");
		if(args.length<1){
			System.out.print("Debe ingresar la ruta del archivo a procesar");
			return;
		}
		
		try {
			
			FileReader fr = null;
			fr = new FileReader(args[0]);
			BufferedReader br = new BufferedReader(fr);
			String linea = br.readLine();
			int cantidadVertices = linea.split(":")[1].split(",").length;
			String diccionario[] = new String[cantidadVertices];
			int idVerticeFila = 0;
			
			// Creo el grafo
			Grafo grafo = new Grafo(cantidadVertices);
			
			while (linea != null){
				String nombreNodo = linea.split(":")[0].trim();
				
				// Agrego el nombre del nodo al diccionario
				diccionario[idVerticeFila] = nombreNodo;
				String distancias = linea.split(":")[1];
				int idVerticeColumna = 0;
			
				// Agrego una nueva arista para cada nodo adyacente
				for(String distancia:distancias.split(",")){
					if(!distancia.trim().equals("-1")){
						grafo.agregarArista(idVerticeFila, idVerticeColumna, Integer.parseInt(distancia.trim()));
					}
					idVerticeColumna++;
				}
				idVerticeFila++;
				linea = br.readLine();
			}
			
			// Obtengo el vertice que es el centro del grago
			Resultado resultado = Ecentricidad.calcularEcentricidadMinima(grafo);
			
			
			if (resultado != null){
				System.out.println("El centro del grafo es el nodo " + diccionario[resultado.getVertice().getId()] + " con ecentricidad " + resultado.getEcentricidad());
			}
			
		}catch (FileNotFoundException e) {
			System.out.println("El archivo pasado por parametro no existe");
		}catch (IOException e) {
			System.out.println("Se a producido un error al leer el archivo");
		}

	}

}
